WebApplication.CreateBuilder() methods

.NET 6 और उसके बाद के versions में प्रयोग किए जाने वाले WebApplication.CreateBuilder() methods के विभिन्न प्रकार के overloaded versions के बारे में इस पोस्ट में समझेंगे।  

.NET 6 और उसके बाद के संस्करणों में WebApplication.CreateBuilder() मेथड्स के ओवरलोडेड वर्जन्स का उपयोग किया गया हैं। .NET 6 और उसके बाद के संस्करणों में, WebApplication.CreateBuilder() एक महत्वपूर्ण स्टैटिक मेथड है जो WebApplicationBuilder का एक इंस्टेंस बनाने के लिए उपयोग किया जाता है। 

इसका प्राथमिक उद्देश्य ASP.NET Core एप्लीकेशन के लिए एक डिफ़ॉल्ट होस्ट कॉन्फ़िगर करना है, जिसमें Kestrel सर्वर, कॉन्फ़िगरेशन सिस्टम, लॉगिंग और डिपेंडेंसी इंजेक्शन शामिल हैं। 

मुख्य WebApplication.CreateBuilder() ओवरलोड 

A. WebApplication.CreateBuilder(string[] args) 

यह सबसे आम और लगभग सार्वभौमिक रूप से उपयोग किया जाने वाला ओवरलोड है। 
पैरामीटर: args (एक string[] जो कमांड-लाइन आर्ग्यूमेंट्स का प्रतिनिधित्व करता है). 
कार्यक्षमता: यह एक WebApplicationBuilder इंस्टेंस बनाता है और कमांड-लाइन आर्ग्यूमेंट्स को एप्लीकेशन के कॉन्फ़िगरेशन सोर्स में शामिल करता है. यह डिफ़ॉल्ट रूप से एक होस्ट को कॉन्फ़िगर करता है जिसमें: Kestrel वेब सर्वर, appsettings.json, appsettings.{Environment}.json फ़ाइलें, एनवायरनमेंट वेरिएबल्स 
और दिए गए कमांड-लाइन आर्ग्यूमेंट्स को कॉन्फ़िगरेशन प्रोवाइडर्स के रूप में शामिल करता है। कंसोल लॉगिंग सक्षम करता है। एक डिफ़ॉल्ट सर्विस कलेक्शन (IServiceCollection) बनाता है।  

उदाहरण: 
var builder = WebApplication.CreateBuilder(args); // args 

आमतौर पर Main(string[] args) से आता है दूसरा (कम-सामान्य) WebApplication.CreateBuilder() ओवरलोड (मुख्य रूप से टेस्टिंग/विशिष्ट परिदृश्यों के लिए) उपयोग किया जाता है।

B. WebApplication.CreateBuilder(WebApplicationOptions options)

यह ओवरलोड आपको WebApplicationBuilder के निर्माण के दौरान कुछ अधिक नियंत्रण प्रदान करता है, खासकर जब आप डिफ़ॉल्ट कॉन्फ़िगरेशन व्यवहार को संशोधित करना चाहते हैं या परीक्षण परिदृश्यों के लिए।  

पैरामीटर: options (एक WebApplicationOptions ऑब्जेक्ट)

WebApplicationOptions क्लास: यह क्लास आपको कुछ गुणों को सेट करने की अनुमति देती है जो WebApplicationBuilder के निर्माण को प्रभावित करते हैं: 
  1. Args: कमांड-लाइन आर्ग्यूमेंट्स प्रदान करता है. यदि आप प्रोग्रामेटिक रूप से आर्ग्यूमेंट्स देना चाहते हैं तो यह उपयोगी है। 
  2. ApplicationName: एप्लीकेशन का नाम सेट करता है (जो आमतौर पर एंट्री असेंबली नाम से प्राप्त होता है)
  3. EnvironmentName: एप्लीकेशन का एनवायरनमेंट सेट करता है (जैसे "Development", "Production")
  4. ContentRootPath: एप्लीकेशन का कंटेंट रूट पाथ सेट करता है। 
  5. WebRootPath: वेब रूट पाथ सेट करता है (जहां स्टैटिक फाइलें स्थित होती हैं)
  6. Configuration: यह सबसे महत्वपूर्ण है, क्योंकि आप एक मौजूदा IConfiguration इंस्टेंस प्रदान कर सकते हैं जिसे WebApplicationBuilder उपयोग करेगा. यह तब उपयोगी है जब आप चाहते हैं कि आपका एप्लीकेशन एक कस्टम कॉन्फ़िगरेशन सेट के साथ शुरू हो, जैसे यूनिट टेस्टिंग में या जब आप कॉन्फ़िगरेशन को बाहरी रूप से पूरी तरह से नियंत्रित करना चाहते हैं। 

कार्यक्षमता: यह options ऑब्जेक्ट में प्रदान की गई सेटिंग्स के अनुसार WebApplicationBuilder का एक इंस्टेंस बनाता है, जिससे आप डिफ़ॉल्ट कॉन्फ़िगरेशन स्रोतों पर थोड़ा अधिक फाइन-ट्यून नियंत्रण रख सकते हैं।  
उदाहरण:
var options = new WebApplicationOptions
{
    Args = args, // कमांड-लाइन आर्ग्यूमेंट्स पास करें
    ApplicationName = "MyCustomApp",
    EnvironmentName = "Staging",
    // यदि आप मौजूदा कॉन्फ़िगरेशन प्रदान करना चाहते हैं:
    // Configuration = new ConfigurationBuilder().AddInMemoryCollection(new Dictionary<string, string> { { "MyKey", "MyValue" } }).Build()
};
var builder = WebApplication.CreateBuilder(options);
WebApplication.CreateBuilder(args) को डिफ़ॉल्ट रूप से सबसे सामान्य और अच्छी तरह से काम करने वाली सेटिंग्स प्रदान करने के लिए डिज़ाइन किया गया है। 

ध्यातव्य: यदि आपको अधिक कस्टम कॉन्फ़िगरेशन की आवश्यकता है, तो आप WebApplicationBuilder इंस्टेंस बनने के बाद उसके गुणों (जैसे builder.Configuration, builder.Services, builder.WebHost) का उपयोग करके उसे आगे कॉन्फ़िगर करते हैं, न कि CreateBuilder() मेथड के ओवरलोड के माध्यम से। उदाहरण के लिए, यदि आप एक कस्टम लॉगिंग प्रोवाइडर जोड़ना चाहते हैं, तो आप WebApplication.CreateBuilder(args) को कॉल करने के बाद builder.Logging.AddCustomProvider() का उपयोग करते हैं, न कि CreateBuilder() का कोई विशेष ओवरलोड. यही कारण है कि .NET 6+ में WebApplication.CreateBuilder() के "विभिन्न प्रकार के ओवरलोडेड वर्जन्स" की व्यापकता नहीं है, जैसा कि कुछ अन्य क्लासों में हो सकता है। यह सादगी और डिफ़ॉल्ट कॉन्फ़िगरेशन के माध्यम से सशक्तिकरण पर केंद्रित है।

टिप्पणियाँ

इस ब्लॉग से लोकप्रिय पोस्ट

Differences between in-process and out-of-process hosting models

Web Fundamental Concepts in Hindi for Beginners - FAQs with their Answers Part-1

Introduction to ASP.NET Core and Web Frameworks